ci: fix job-level CONAN_HOME (runner.temp invalid at job-env → 0 jobs) - #704
Merged
Conversation
runner.temp is only valid at step scope; setting CONAN_HOME as job-level env made build.yml + release.yml fail to parse -> zero jobs materialized (CI + release dark since #700/#702). Export it in an early step via $GITHUB_ENV (PowerShell Out-File on Windows) where RUNNER_TEMP is valid. Per-job/per-cell Boost cache isolation preserved; path matches the step-level cache.
…flows
Fold the runner.temp parse-fix into one CI-repair pass: convert every
conan-building workflow that was still on the shared ~/.conan2 pattern
(the root cause of the Boost 1.90.0 torn-cache flakes, e.g. b2/5.5.1
recipe loss) to the isolated per-job home used by build.yml/release.yml.
Workflows (7): bch-gate-g3a, bch-gate-g3b, dash-gate-g1, dash-gate-g3a,
dgb-phase-b-smoke, coin-matrix, codeql-analysis
- add early step exporting CONAN_HOME=$RUNNER_TEMP/conan2 via GITHUB_ENV
(runner.temp is step-scope only; job-level env fails to parse)
- drop conan profile detect --force + cppstd sed; use committed
ci/conan/linux-gcc13.profile
- cache path -> runner.temp/conan2; key scoped by profile + conan.lock
Gate scripts (5): bch_g3a, bch_g3b, dgb_phase_b_smoke, g1_byte_parity_kat,
g3a_regtest_block_production
- conan install now pins -pr:a=<profile> --lockfile=conan.lock
This was referenced Jul 15, 2026
frstrtr
added a commit
that referenced
this pull request
Jul 19, 2026
…te lanes
The Conan cache-lock flake is not CodeQL-specific. Job 88179349495
(Coin matrix / ltc smoke) and 88188892260 (CI / Linux x86_64) fail the
same way: actions/cache reports a hit, the restore of the multi-hundred-MB
conan2 tree onto VM905 then times out ("Failed to restore: The operation
cannot be completed in timeout"), the home is left empty, and all eight
runners fall into a simultaneous cold from-source rebuild whose I/O storm
blows the 20s sqlite lock timeout ("Conan failed to acquire database lock").
Apply the same three-part fix everywhere the pattern appears:
* CONAN_HOME on self-hosted becomes $HOME/.conan2-ci/$RUNNER_NAME --
persistent, so the cache-service restore is off the hot path, and
keyed on the runner instance, which executes one job at a time, so it
is never contended and keeps the per-job isolation of #704/#710.
github-hosted forks keep RUNNER_TEMP/conan2 + actions/cache unchanged.
* actions/cache conan2 steps are gated to runner.environment ==
github-hosted.
* conan install gets a bounded 3x retry; remote downloads are the only
network step left.
Also scopes coin-matrix orphaned-tempfile cleanup to $CONAN_HOME instead
of the shared ~/.conan2, which it was mutating out from under peer jobs,
and repoints the CodeQL home from .conan2-codeql to the same per-runner
path (that one was still shared across runners on concurrent refs).
Windows (VM217) lanes are untouched: no restore flake reported there.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Regression fix — CI + release have been dark since #700/#702 merged.
Root cause
#700 (build.yml) and #702 (release.yml) set
CONAN_HOME: ${{ runner.temp }}/conan2at job-levelenv:. Therunnercontext does not exist at job-env parse time (step scope only), so GitHub rejects the workflow: Unrecognized named-value: runner. Effect (confirmed live):workflow_dispatchon release.yml → HTTP 422 "failed to parse workflow".Fix
Drop the job-level
env: CONAN_HOMEin all 3 affected jobs (build.yml linux, release.yml linux + windows) and export it in an early step via$GITHUB_ENVwhereRUNNER_TEMPis valid (PowerShellOut-Fileon Windows). Per-job/per-cell Boost cache isolation is preserved; the exported path matches the existing step-level cachepath:.Verified
yaml.safe_load).runner.tempremains (only comments + step-level cachepath:, both valid at step scope).$GITHUB_ENVexports present (build-linux bash, release-linux bash, release-windows pwsh).Follow-up (non-blocking, per integrator): release macos/macos-universal/checksums and build.yml other coin jobs use shared ~/.conan2 and are still flake-exposed — add the same isolation step-set separately.
Signed b4ba979. No self-merge — integrator review + operator tap.